package cate.common.table.d;

import cate.common.table.common.ParamRow;
import cate.common.table.common.ParamSheet;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

@Slf4j
public class GDParamTool {

    public static String getString(ParamSheet paramSheet, int id, String defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        return row.value;
    }

    public static byte getByte(ParamSheet paramSheet, int id, byte defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Byte.parseByte(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static short getShort(ParamSheet paramSheet, int id, short defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Short.parseShort(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static int getInt(ParamSheet paramSheet, int id, int defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Integer.parseInt(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static long getLong(ParamSheet paramSheet, int id, long defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Long.parseLong(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static float getFloat(ParamSheet paramSheet, int id, float defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Float.parseFloat(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static double getDouble(ParamSheet paramSheet, int id, double defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return Double.parseDouble(row.value);
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }

    public static boolean getBoolean(ParamSheet paramSheet, int id, boolean defaultValue) {
        ParamRow row = paramSheet.get(id);
        if (row == null || StringUtils.isBlank(row.value)) {
            return defaultValue;
        }
        try {
            return "true".equals(row.value) || row.value.contains("1");
        } catch (Exception e) {
            log.error("", e);
            return defaultValue;
        }
    }
}
